package fr.afcepf.atod16.groupe1.projet2.dao;

import fr.afcepf.atod16.groupe1.projet2.dto.DtoCommandeStock;
import fr.afcepf.atod16.groupe1.projet2.enumerations.EtatLivraison;
import java.util.List;
import javax.ejb.Local;

/**
 * Interface de la DAO commande
 * @see Dao
 * @author cedric
 */
@Local
public interface DaoCommandeStock extends Dao<DtoCommandeStock> {

    /**
     * Recherche des commandes à partir de leurs noms
     * @param nom Le nom recherché
     * @return La liste correspondante
     */
    List<DtoCommandeStock> rechercherParNom(String nom);
    
    /**
     * Recherche une commande à partir de sa clé primaire en remontant 
     * les produits dans le même temps
     * @param id La clé primaire
     * @return La commande
     */
    DtoCommandeStock rechercherParIdAvecProduit(Integer id);
    
    /**
     * Recherche une commande à partir de la clé primaire fourni par le site.
     * @param idSite La clé primaire de la commande sur le site
     * @return La commande
     */
    DtoCommandeStock rechercherParIdSite(Integer idSite);
    
    /**
     * Passe la commande en etatLivraison = EtatLivraison.BLOQUE
     * @see EtatLivraison
     * @param id La clé primaire de la commande
     */
    void annulerCommande(Integer id);
}
